{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "from torch.autograd import Variable\n",
    "import torch as t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        \n",
    "        self.fc1 = nn.Linear(28*28, 300)\n",
    "        self.fc2 = nn.Linear(300, 10)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = x.view(x.shape[0], -1)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.logsigmoid(self.fc2(x))\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mnist_loader import load_data_shared, vectorized_result\n",
    "training_data, validation_data, test_data = load_data_shared(filename=\"../mnist.pkl.gz\",\n",
    "                                                                     seed=666,\n",
    "                                                                     train_size=1000,\n",
    "                                                                     vali_size=0,\n",
    "                                                                     test_size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(data, net):\n",
    "    with t.no_grad():\n",
    "        #for index in range(test_data[0].shape[0]):\n",
    "            # get the inputs\n",
    "        inputs, labels = t.Tensor(data[0]), data[1]\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        _, predicted = t.max(outputs, 1)\n",
    "\n",
    "        correct = (predicted == t.Tensor(labels)).sum().item()\n",
    "        accuracy = correct / data[0].shape[0]\n",
    "        return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit(net, criterion, optimizer):\n",
    "    loss_scores = []\n",
    "    test_scores = []\n",
    "    train_scores = []\n",
    "    for epoch in range(100):  # loop over the dataset multiple times\n",
    "\n",
    "        # get the inputs\n",
    "        inputs, labels = t.Tensor(training_data[0]), t.Tensor(training_data[1])\n",
    "        vector_labels = t.Tensor([vectorized_result(y) for y in training_data[1]])\n",
    "        # zero the parameter gradients\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # forward + backward + optimize\n",
    "        outputs = net(inputs)\n",
    "        loss = criterion(outputs, labels.long())\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        # print statistics\n",
    "        loss_scores.append(loss.item())\n",
    "        train_scores.append(predict(training_data, net))\n",
    "        test_scores.append(predict(test_data, net))\n",
    "    print('Finished Training')\n",
    "    return loss_scores, train_scores, test_scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ReLU + Sigmoid + Cross Entropy + L2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "import torch.optim as optim\n",
    "net1 = Net()\n",
    "criterion1 = nn.CrossEntropyLoss()\n",
    "optimizer1 = optim.SGD(net1.parameters(), lr = 1e-1, weight_decay=1e-2)\n",
    "loss_scores1, train_scores1, test_scores1 = fit(net1, criterion1, optimizer1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(loss_scores1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(train_scores1)\n",
    "plt.plot(test_scores1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  ReLU + Sigmoid + Cross Entropy + L2 + adaGrad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "import torch.optim as optim\n",
    "net2 = Net()\n",
    "criterion2 = nn.CrossEntropyLoss()\n",
    "optimizer2 = optim.Adagrad(net2.parameters(), lr = 1e-1, lr_decay=1e-2, weight_decay=1e-2)\n",
    "loss_scores2, train_scores2, test_scores2 = fit(net2, criterion2, optimizer2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(loss_scores2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(train_scores2)\n",
    "plt.plot(test_scores2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Adagrad效果对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO2dd3Rc1fW2n6NudVnFcrfcGy64gQ3YBkIxYBM6BBISAiGBhI8kkEAavxRSISGEEAgkBJLQbWNMj7HBxg3jhi25F1m2rN67NOf748zVFM1I02RJ4/2spXVn7r1z51wPvLPnPXvvo7TWCIIgCH2fiJ4egCAIghAaRNAFQRDCBBF0QRCEMEEEXRAEIUwQQRcEQQgTonrqjTMyMvSIESN66u0FQRD6JJ999lmp1jrT07EeE/QRI0awZcuWnnp7QRCEPolS6qi3Y2K5CIIghAki6IIgCGGCCLogCEKYIIIuCIIQJoigC4IghAki6IIgCGGCCLogCEKYIIIuCMLpTcEWOL61p0cREnqssEgQBKFX8NZ3ITIWvv5BT48kaETQBUE4PagthphEiIl37NMayg9DZEzH85vroKUBEjJO3RiDRCwXQRDCH5sNnpoPq3/lur+hApqqob4Ummpcj33wM/jHxadujCFABF0QhPCn7ADUnIDCHa77yw87HlcccT1WuMO8rqm224cXKkTQBUHoveRvgsdnGrvEmYoj8OfpcPJz1/1NtfDkPNj7ruv+Y5vMtuyA23WcBN1Z3J3PLT/oun/P2/D0Qmhrcd1/cpcZa3Vhp7fUnYigC4LQe/n8FSjbD7uXu+7f8RKUH4Ktz7vu3/cuFO2CnS+57i/YbLY1ha7WSoWXCL2+HBrKzePS/a7X2v8enNgKZW5Cf2i1Geu+d3y6te5ABF0QTgf2vgvv/xjaWnt6JJ4p+Aw+/KWZpHTm4Gqz3b3Udf/uZWab+wbY2jruP/SR8c0tjm02mSzgKsTlRyAxG/qluYq7cyTvLtzFe8y2JM/zfmvMFs318Nb3ofoE3Y0IuiCEM61N8M4P4cXrYf3j8Mkfe3pEnvnot/Dx7010bVFx1NgdKUMhf4NDEItyoWQPjDgXaovg6Hqzv7Ea9n9gzm8oh5N2v7yhwpw/4XLz3FmsKw5D/xxIy3G1XKyoPDLGRN0WWkOxXciL3QU912wPf+T6JZO3Aj79O2z+u///Ln4igi4I4UrFUXj2C7DpSZhzJ0xcAmt+6+o7N1aZ6N09MvaVY5uhtqTj/qLdHSNbMKLpXsTTUAEHPzSPrQgbjIUBcOlv7cfstsvupaAiYPHjEB3viN73vgNtTXDJb8xz65oFn5ntlBsA5SboRyBthPlztlzKDkBEFAyd43p+TSE0VZnHzoJus0HJXkgaZP5NT2xzHLPuafeywP+dfUQEXRDCkbYWePlmYync8F8jipf90VgLy74Jrc1w/DN46jwTveet8P89tIbnr4R1HqL+pXfAyns77n/3AXh+iYmmLfa8BbYWSB4Cu5Y6RO/gakgaCOMWQfYZRri1NsI44hwTWY+9GHJXGCtp91JzjXGLYMBkh/VxbJP5Ahg+F1KHOqLvlkYT9aflmGtVHXNYUmX7zf6sCVB6wDEmS8Tj003Ub1F1DFrqYNZtjrGD+bI6sMqMq+IwFG73/9/ZD0TQBaGv09pkBNqZtY/AyZ1w5RMw/jKzLyEdrngMij6H/1wNz15sBCx5CKz/i//v21BhRKzSw4poFUeNeLlHpCe2mbzvbS849u1eBqnDYf59DtGztRnrYuRCUAomXQUFn5oovOwATPqiee2kq0wO+Z6VRjgnXQkRETBygRHy5jqzHTAZYhMhfbQj4q48CmiH5WJrNcIM5tdF+mjz11zjyLKxBH3CYnNOa5Pr/hHnwsCpjl8X1pfVFY+ZiH+X21xAiBFBF4S+zrJvwB8nOiyGE9uNH33GdTDhCtdzxy+CqTfC4Y9NdHvnWph3j8kCyd/k3/vWFpltVYHr/sYqI4KNVa5iX1MEtSdNtLzxSfMror4cDq0xAj1hsRG93ctMDnhDBYw637zWEvA37wEVCROWmOdjvmCqP9++zwjnpKvM/lHnQ1szHF5rfokMnWP2p48xgq61w2KxLBcw+2xtRqwz7IIODh+9JA8SMs0vBN3miPatCdLMceZL6Nhmk01jfVmNvsDs3728W20XEXRB6Ms0VEDem0Y8X7gK/vcQLP8mxGfAot95fs3lf4Jb34Lr/w3x/WH6lyAuFTY87t9715w02+rjrvurnJ4X7nQ8Pml/fNa3TCSc+4YZu60VJl9lxjJyoRHBg6vMuSMXmG3/HBg0HeqKYeR882sDILofjLvU7E8dDoPPNPuHzzVZLRufgOZaGDrb7E8fbZ7XFjkmQS3LBcwvhKoC48WnOwu6Paov3gOZ440VAw7bpXgPJA+Gfqnmy8TWYu7N+rJSytxjVb75gukmRNAF4VRRuh+eu7xjtWIw5K00gnjLcjjzFuNnF+eaCcN+aZ5fEx1nIkylzPOYBOP95q30PJHpDStCrytxWA/gKvDO92o9Pu8+Eymv/7PxvfuPhOwp5tjkq6Ay32SEDDgDEjMdr7eib2vbYf8XHfcU3Q+GnWV+iYBD0DPsAl2634h3TKLp1ZI0yGS0lB92ROPpY0zGTGSsOV9rI+BZE82xiChHZktxrhF6MO8b1c98udpaHb8uxi0y79GNtosIuiCcCtpajTVyZK2ZMGxpDM11dy8zdsHwuUbEr3seLnsUxl7k33Vm3wGR0cYK8RUrQgdXEbcsmH5pjqgcjKCn5Zgo9uxvmeeH1hhBtoTYEr3aIhi1wPX9zrwFzv2eEX1nxnwBzrsfzvqm6/5RC802cYCJ3sE14rYyXJQyvnvqcLPP+lJLH232p48y+6qOmeg+azxExUD/USYyt7VB6T5H1B4Vaz6P2iLzZTVwqv3fIxVGXQC5y11z5EOICLoghJr6cuNh15c79n3yJ/NTe+ZtJspb83Dw71NX5vqTHkxqopVp4Q9J2cZz3/Zv13GD+TJa98eOJe3O5fjORTPVJ4xPPvpC1wj95E6HuE290WSKgCOCBYfogcM/bz+WBhf81PyicCYyGs7/kbkHZ6zXD5lFi03z9McHeXBVOS0qhrUbN1B0NI9dDf15YOlOHli6kz3N6Zw4nMeGzRtpjEjggfdP8sDSnXzelEnx0d08t9xUgP4tL8bsbxlI6eEd/OHl96C1kdeOJbZf6616E62vjprHA8s+b9//csNMqD7Ors3d06pX2ucKQqjZ8ZKpetzyT7j6GYhNhjW/McJ1+aPmZ/j6x2H85Q4rIBDyVpiJOXcLIlDOvgu2/xu2PGtsEef3+d9DxmKY+23H/tqTZp+t1dU3rz5uqi8Hz4DPXzWRfFSciX7P/LI5J7ofnP9jk943YJLrOM6602TCDDs7uPsZcAaMuYjSkVdy+1Mb2JZfSWZSLF/V2aiy/aTqE7zfMpVVeeaLaVpbfy6z7SCiqR+HyGbVHpNfP7YtnVts66jPNymHrx5NpEYVk9M2gK/bPqLygJlMXlmYSm6RudZuPZkcNYo/l5/F8QrHF99GPZaLSaLx5D4g9J0cRdAFwaIy3whPYlZw1ynONSIeFQvPXWYvLU+FRY+Y4xf/ygjZsjvhgp8ACiIiTUTpHn12xu5lxhbIPiO48VoMmGii6k1Pw9zvmPFrbb58ACqPuZ5fU2TEuHAHVDtlulQVQMpghy9euNMIODgidICZXzN/7oxc4JgMDYaICN6d+mfuf20nWtfyxE1nctmUgfDKdMYcXA1NLdxy6XxumXWhOX/DPnjvbebEHIGxl7D5avv+7cWwfCnfGnQAqgay6ntXmv27a+HVl/nl2EOQB8/df4tJjWznJpbhgbZLmRkZHfz9ebrlbrmqIPRFXvuaWb0mWEr2GDH7xscmeq4pNHnIVmZGbJLJD688Cq/eCq9+xRQBrfmN7+9RW2z8eGe7JRScfbfJGNn5inmev8E0ogLzhecyhpN2TzytY4SePMjxRXNyh8N6yZ7KqaCxpY2fLN/Fnf/eSk5GAm9951wj5mC+BJvshU1pOY4XWZkuTdUOr906H0xqpzXxCQ7PfP/7kDLMTcw7oZvEHCRCFwQHdSUm/S8YtDYTZVNvMMJ99TOw6PcmJc+ZnPPg3t0Ov/rDX8JnzxmrIy656/fJWwHaFjq7xWLkAmNVbPgLjZNvJHLdn4ns1x9b1mRURT51jY6WsUm1RTSPOJ+opMHYKo7R0NgCWpNUdZzmkRfSRD8S0nKwFWxHR/cjKjGb2qhUaGzx+vah4ERlA/e+vIO8wmpuPzeH+y4eT0yUU+yaPsbxuL+ToDuLe4YHQQeT4dL+2pFmAre10SHuPYwIuiBYNNdDY6HJQIgI8MdrVYEpqsmyR3JKdRRzi6Rsx0Teed+DvW+ZCsqz7+r6ffa8BRljQy8kSmE7+y4ilt/JH35xLw9GvMvjbVeSUlPHVZGHmPLQ+wDE0cSeuBoe21jFjIhoBp7cy6KH3ieVGrbHNfC79bU8u/Z9/hI9gCllm2gkhnw9kK/bX9/dpMVH849bZ3L++AEdD1oCrSJNWmL7i4Z3PAfM59evv2n4leUUoUdGmy+H4t2u+3sQEXRBsGipNwUlNYXGAw4Eq9Ak00+hHTwDhs01aYOzvwGRXfyvWXEUBk4Jrd0ClNc1c//WYfxSp/Fg5AvYIqLJOPcuRp98i+QD7/Pzi4bQHJ1EUv0x2ABzpkwkq7qNnOLD/PgLE+hfsxc2w9nTpzBwwASyjsxi2MGN2IigdsQifjyq+yPZqAjFJZMHkp0S5/mE9FFmmzLE1f6I7md6x9QUmpREZzLGmBYC7p9r1ngj6P5+3t2ECLoggLFKWurN44rDgQu61dMjkMh57rfhpRtNnvIZ13R+bl0JJAQ5eevGpkNl3PPSdsrrmjk+6Stk7/sTEdNu4EsXzoLdx+EAfHliBGSPhKNFsAHmz5gMJ1rh+Gt8fU42HN4Hm+HCs2bAkJEwcCEcfJwIbJw5ZwFnThgZ0jEHRHx/kzLpbLdYpOUAqqMfnj7aLujjXPdbn7NYLoLQi2htMp40mPS6EecEdp3iPFPI4s1m6YyxlxjhWP84TL7ae/Td0mgm7pyrKIOgzab5y4cHeGzVPkakJ/DsrXOZ1H8evFfmSF9MtVsTlflmstOqEk3MNpEumPxzK9sl2f6F6JzVMnBKSMYbEhY84BijM2d9E+rLOu4/8yum8Mh9fmPyNWaC2j31socQQRcEcETn0HFtSX8oyXPNhPCHiAjjn6+8F46sg5xzPZ9XZ89rDkGEXlnfzDf/vZUNh8q4avpgfnHlZBJi7bKwxKkDo1VpaaUutgv6ANNPBoyYVx03uelW6mdChhHOlnpXv7qnmX275/0TF3veP2yO+XOnf46Z9O4lSNqiIIBps2pREaCgW4scOGdC+ItVQbmhk3a2VoVmsPnywI+W72LL0XL+cO1UHr1+mkPM3YlPN/1JrNTFGntRUXy6w56qOm5SFpMGmrx6i4lLzF+I/X6hIxKhCwK4RujOK9f4Q1W+uU4wGQ/R/WDW7fDRb6BkH2SO7XhOiAT9zR0neGtnIfddPI5rZgzp/GSlIHWYuUcwEXpClvlVkTTI7Ks+bkTd3cq45NdBjVPwHZ8idKXUJUqpvUqpA0qpH3o4PkwptVoptU0ptVMptSj0QxWEbsQS9MTswC0Xa0I02IyHWV83FaveovQQWC7FNY385I1dTB2ayjfO83GiMnWoI0KvLYIke0pgdJxp11tVYGyXQCeUhaDpUtCVUpHAE8ClwETgRqWU+2/KHwOvaK2nAzcAfw31QAWhW2m2C/qASSbfOJACo/YMlyBzkhMzTWHSjpc8r9dp7UsIbFJUa82DS3dR39zGI9dOJSrSR+c1dZjDQ68pMv65RcpgE6FXn/A82SicEnz5JGcDB7TWh7TWzcBLwBK3czRgTf+mACcQhL5Ei5Ogg6vtsvrXpi1AV5TYFzmISwl+PGfdZXLiP32m47G6YohNMZGxn7S02fjNO3v4X14R9100jtFZPparg5nUbCiHplpT9u8s6MlDTHl/W7Mj60U45fgi6IMB5648BfZ9zjwE3KyUKgDeBr6NB5RSdyiltiiltpSUeIg8BKGnsCZFLUG3bBetTfXm7mUd28q647zIQbBkjoWxl8Knf4eWBtdjtcUBpSwWVNRz/VMbeOrjQ9w4exhfO8dDHnZnpA4z24rDUFfq2q42ZbDJjQeJ0HsQXwTd09S0+6J4NwLPaa2HAIuAF5RSHa6ttX5aaz1Taz0zMzM0ObSCEBKsCN3KULEyXUr3GytB2xyr33jCZl9fMpQFJnPvNjnRO15y3R9AUdGWI+Vc9ud17Cuq5fEbp/Prq84gMsLPrBNL0I9/Bmi3CN1JxMVD7zF8EfQCwDmBdAgdLZXbgFcAtNYbgDggIxQDFIRTgiXoSdkmFc+yXKyFlyNjHSu5e6LiSOibNA2fZ2yOI+tc9/sZodc0tnDPS9tJi4/mre+cwxVTBwU2HkvQCz41WxcP3clmkQi9x/BF0D8FxiilcpRSMZhJzxVu5+QDFwAopSZgBF08FaHvYE2KRvcz5d+W5XJotemqN/pC08PcG9bakqHs6aGUeW/3NMq6Yr8i9F+uzKOwqoE/Xj+N4el+9Ft3JyHLdBcs2GKeO1suyfYvicgYk/Ei9AhdCrrWuhW4G3gPyMNks+xWSv1cKWWVVX0PuF0ptQN4EbhVa+1uywhC78WK0KPjzTqTFYehtdlExyMXmvUpK49C+aGOr9XatL6Njg99173+Oa6FTq1NJgPHxxz0D/cU8fKWY9w5fxTTh3lZNNpXIiLML4aSvea5J8sleVDgnSqFoPGpsEhr/TZmstN530+dHucC80I7NEE4hTTXmdzviEgjoruXQv56syjwqPMdVsrBD03U7MzWf8GB/8GiP/i34pAvpI0wPnpjtekjUud7ymJlfTM/fP1zxmcncc+FY7o83ydSh0G5fRFl5y+V5EGAMtkuQo8hX6WCACZCj443j9NyzCTo1hdMz+ycc42IpwzraLtUHIX3fmQWrJgZwOLMXWEtumDZLs49VDrhaFkdtzy7mfK6Zv5w7VRioyI7Pd9nrCZd/dLMEnUWkdFG7D11MBROGVL6LwhgPHQruk4bYba5b5g+5VZe+agFsPsNaGs1/cptNnjjLkDBkie6x2qwBLLisOlWaBUVdWK5rNhxggeXfk5khOLJm2cweXAI8uItrInRxOyOx25+3Qi90GNIhC70DOv/Au//pKdH4aCl3rGQsSWithZjt1iMOh+aqswam22t8P6PzbqeF//KIXShxvpysSL09rL/jpZLQ3MbDyzdyXde3Ma47CTevudcvjCx80jeb1Ls95nk4boZY0x3RaHHkAhd6Bn2vgPHt8DCHwVU8RhynC2XxGzjp7c2mslQi5z5gILt/zFifmyTsVnO/HL3jSsuxSx/ZmXdeGnMtb+ohrv+u5V9RbV8c8EovvuFsUT7WtLvD51F6EKPIxG60DM0VhnBzN/g/2vrymDNbx2phqHA2XKJiDD9v2OSjOViEd8fBk0zGS1FuXD1s3D5o93fFtbKugEzKRqT5Pg1Aby7q5Ar/rKO8rpmnv/abH5wyfjuEXNweOghaN0rhB6J0IWeobHSbA+tdo2CfeHQaljzsOkrculvQzOeljrX/OkzrjFfOM5rToJpbbvrdbOoQbrbupPdRf8ce3UmHYqKGlva+PHy3YzOSuQft84iK6mbf+0kDYQxF7taUUKvQQRd6BmsboYHV8MXnPY3VJpS+86W9LJyxjf9DcZf7n1lH39orofUeMfz+fd7Pm/6l8zfqSQtB3Yvh7aWDmX/K7afoLS2icdumNb9Yg4mrfNLr3T/+wgBIZaLcOqxtZk1MWMS4eRO0+jJ4s174B+XmHO80dJotonZ8Ma3oKkm+DG1NEB0iHPIQ0XaCNBtpt+4U4Sutebvaw8xYWAyc0el9+wYhV6BCLpw6rGi83GXmu2hNWZbfhjyVhixrzzq/fVWhH7lX01/7lBky7TUufjSvQrn1EWnsv81+0rYX1zLHefloGR5NwERdKEnsPzznPkQl+oo1tn4pCnoAcdiEZ5otUfoIxeajoSf/RNWP9x5VN8VzfUQE9/1eT2BVVxUut8syGyfkPz7x4fITo7j8ikBNtsSwg4RdOHUY0Xo8emmwvLQatNrfNsLMMHeHqgzQW9pMN0PIyLg/J/A1Jvgo9/CvxabFXP8xWaD1l5suSQNNPd7bLN5npDJruNVrD9Yxq3zRnRfRovQ55D/EoTAsLXBsm/CyV3+v7bBHqHHpZhsierj8O4DxkpZ8EN7A6g93l/f0uDIXY+KhS8+CV98Ck5sgyfnwb73/RuPZeH01gg9IgLShlO5/xMAfvVxOV//1xYSYiK5cXY3FTQJfRIRdCEwak7Cjv/Cvnf9f60VofdLdaQs7nzJiPuASWbVn+JOBL21AaLc/O6pN8A3PjJNov57remv0trs23isFYGie6mgA81Jw0htKgRAJ2QyYWASP7tiEin9ort4pXA6IWmLQmA0VZttXQBt7xudIvSUIcYjrjgMZ99t9meNh8MfOXqmuNPS6HkCM2MMfH0VvP8j2PAXOLoebnq56yKYFvvyc71Y0A+1ZWE15v3xdfOlCZbgEYnQhcCwUgWtUnR/sCL0uFSznf4le89xe7FK5gSz2LBzH3BnnPuuuBMdB5c9Atc9bxYt3vhk1+Np7uWWC7CxMtnxRKo0BS+IoAuBEUyE3lBp2tJapfbn3QdfXu4oobd6j3ubGG1tNL1WOmPiEjPhunupWYCiM9oXt+idk6LF1Y2sK7OPLToh9D3XhbBBBF0IjEa7oAcaofdL9d4DJXOc2XoT9JZG3+yRyVeZLoWF2zs/r9luufTSCP3tzws5YrN3N/RjLVHh9EMEXQgMy3KpC0TQKx09xj0Rk2CaY5V4E/R63zo0jr8cIqJg19LOz3Nefq4XsnJnIfFZ9lWS/FhLVDj9EEEXAsOyXBoqfM8msWiscvjn3sia6D3TxRfLBUx3xJELTR+UzmyX9rTF3mdlFFY1sOVoBRdNHQFJgzz3IRcEOyLoQmA490/x10dv6CJCB5PpUrbf85eFc+/yrph8FVTlO7oVesKaFO2Fpf9v7TSpipdNGWTy7ef/sIdHJPRmRNCFzmmsgpXfNZG4y/5qx2N/bRfLQ++MzAlga3UsSOxMS6Pvi2KMWwSRMZ3bLr10UlRrzYodJ5g0KJmcjAQYuQCyJ/f0sIRejAi60Dl5b8KWZ01OtzPOEXqtnxF6Vx46dJ7p4qmwyBv9UmHUBZC73JT4e6KXToq+suUYOwuquGmOVIMKviGCLnSO1TjLKte3aKpy2B7+ROha++ahZ4wFFeG5BUBLg3/2yOSrTHuBgs2ej7fUA8o3X/4UUVBRzy9W5nHWyP7cOEsEXfANEXTBOzabo7Vto7ug10B/+4o9/qQutjSYoqGuIvToOFNBWpzrNqY283p/BH3sJebLZ+vz3scUk9D9S8n5iM2m+cHrO9Fa8/trphIR0TvGJfR+RNAF7xR9DvX2xSfcPfSmGlOxGJPo36Socx+Xrsia0DHTxWqd64+gxyXDtC/BzldMDxp3mntXL/T/bDrKJwfKePCyCQzt37tsIKF3I4IueMeyWyJjOloujdVGKBMy/YvQnfu4dEXmODMp2tbq2Gc10vLVQ7c4+1tmknXz0x2P+ZM1041orXl+wxF+sTKPc8dkcJN0UhT8RARd8M6h1SYfPHmQZ8slNslE6f546O59XDojPt0seGE1zwKnzoh++t39R8KEy+HTZx2ToBbNdT2eg15V38Kd//6Mn76xm7mj0/nzDdNlFSLBb6TbouCZlgY4ugFmfR3y13uYFK2GWHuEXuYhtdAb7b3QfRB0S2Sbah0RfbvlEkBEffa3TdbOtv/AnDsc+09RhP7urpP8/r091Dd3XFmpprGVxpY2frRoAredkyO+uRAQIuiCZ46uh7Ym06+8ONfVQ29rNSIYm2widPeUxs7wx0OPSTRb54jayhkPJCNl2BwYMhs2PgGzbjMr2EO3Lz/X2NLGr9/O418bjjI+O4lzx6R1OCcyIoLrZw1l2lAf/l0EwQsi6IJnDq023vnwubD9P1B1zHHMKvuPTTKWSEM5tLVApA+LLfjjobcLulPOe4sVoQeYYjj3bnjly7BnpenICOZLol9HkfWHrfkVvLrlGK1tHVsM7CyoYm9RDV+bl8MPLh1HbFRkUO8lCN4QQRc8c3ANDJ1jbI9+aa6Wi1VUFJcMUTHmcV0pJA/s+rrtHrovgm63XDxF6IFaJOMvN+99cLWroAeY5WKzaZ76+BB/eH8v8dGRJMV1/F8qPjaKZ748kwsnSh8WoXsRQRc6UltsUhYv+Kl5HpdqLBetTa62c4Qea194oa7YN0FvqDQl9r5E854E3fLQAy0CioiEtBGuvzgCtFzK65r5fy9v5+N9JVx2xkB+ffUZJMfJknBCzyGCLnTk+FazHX6O2fZLBd0GzbVGxK0IPTbZEdn6Wv7vSx8Xi9gks22qdexrz3IJIm88ZSiU7ne6Zp3ffVxsNs23X9zKp0cq+NUXJ3PT7GGSlSL0OJK2KHTEskUSMszW8pct28VZ0BPsCy74mrroSx8Xi/YIPcSCnjocKvMdLXUDiNCt4p+fXTGRL80ZLmIu9ApE0IWOtFsqdjvFSjG0Ml2sTotxyY71LX0tLvKlj4uFpyyX1gALi5xJHWquU19mJnNtLX5F6EfL6nj47T1S/CP0OkTQhY60R+B2y8OySKwMFWcPPSbRiKuv5f++9EK38BihB5nlApBqF+HKo06TrL59QbTZNN9/dQdRkYrfXTNFInOhV+GTh66UugR4DIgEntFa/8bDOdcBDwEa2KG1vimE4xROJU01Zum2qFjzvIPl4hTBK2XWufQnQve1p3dEpPmy8Gi5BJE3njLUbCuPmVWAwKvl0txq40//28fH+80XVmOLjQPFtfzh2qkMTOk9/V8EAXwQdKVUJPAE8AWgAPhUKbVCa53rdM4Y4AFgnta6QiklCx/2Zayyfiv6dLdcmmpARTqi2gQ/yv/98dABYhNdJ0VbG8x7+72bR28AACAASURBVJIl4432CD0fss8wjz1YLvll9Xz7xa3sKKji7JHpxMeY/PErpgzi6jMHB/7+gtBN+BKhzwYOaK0PASilXgKWAM59TW8HntBaVwBorQNYOVjoNViCbuFuuTRWuwp+4gCoONL1dW1tJrr31UMHY7s0u/VyCbZMv1+q+XVRdYz1e/KZCyzdXcH+Qkdnx5ZWGy9/egyl4G83z+CSydnBvacgnAJ8EfTBgFPSLgXAHLdzxgIopT7B2DIPaa3fdb+QUuoO4A6AYcNkMqnX0lzrmBAF45NHRLlmucQ5HU/MhGObur6uP0VFzu/dQdBDsBBF6jAqThzgkXXbmRsDb+ZW8ok+7HLK9GGpPHLdVIak9XwnRkHwBV8E3dOsj3t9cxQwBlgADAHWKqUma61dOjpprZ8GngaYOXNmJ8uwCz1KU7VrhK6Uo7gI7BG8k6AnZNkzRlohspP/pPzp42IRk+ha+t/aGFyGi3WZpCGUH8xjeNJ50AT/vGMBDDsr6OsKQk/iS5ZLATDU6fkQ4ISHc97QWrdorQ8DezECL/RF3C0XMCLsnOXiLOiJWYA2ot4Z/vRxsehguQRepu/Mp5UJZNmKuXOuvbq1Fy1wIQiB4ougfwqMUUrlKKVigBuAFW7nLAcWAiilMjAWzKFQDlQ4hXgU9DTXLBfn474WF/nTC90i1t1yaQzaclm7v4RVhXEkqQbGxtkzdvysFBWE3kiXgq61bgXuBt4D8oBXtNa7lVI/V0ottp/2HlCmlMoFVgP3aa27CNeEXktTjaOox8LZcrFWK7LwtbioIZAI3UOWSxCWy6dHyrn35R20JdmzVKxFqLuxfa4gnCp8ykPXWr8NvO2276dOjzXwXfuf0NfxZrmU7fd8PMEu6F0VFwXkoSd0zEN3/7LxAZtN8+RHB3n0g30MSevHrZfMh9d/5xD0XrAEnSAEizTnElxxXrzCmQ6Wi1uWC3QdoQfkoScaQbc6PbY0OiweHymuaeS7L+9g3YFSrpg6iIe/OJmkNvuXS3uELpaL0PcRQRdcaXYr+7eISzURdksDtDW7Ho9NNu1sa4s6v3ZjlSkK8ifCjkkwizu3NZvK1dYGv1rnrt1fwr0vb6e2qZXfXHUG188aasr1dbqJyuvLTEpmMIVKgtBLEEEXXLH8ak+WCxqqjtuPO0XoSpnioq4E3erj4k//E2sczXVG0H0sLGpts/HoB/t48qODjM5M5L+3n8XYAW6pmClDoXSvTIgKYYMIuuCKe2MuC6ufS+VRs41zs2R8EXR/eqFbtC8UXQPx/X0qLDpe2cB3XtzGZ0cruH7mUB5aPIl+MR6WfUsdZgRdJkSFMEEEXXDFm6BbqYbWSj/ux5MGQMm+zq/tbx8X6LhqUUvnlssHuUV8/9UdtNk0j90wjSXTOum5kmovr5AJUSFMEEEXXPEaodsFvTLfftw9Qs+Gwx93fu2GSv9y0AFinCwXrY2H7kWAV+8t5vbnt3DG4BQev3E6IzK6sFKsJl0SoQthggi64Ipzr3Nn2i2XfM/HEwc4Jk29VV02lJv1PP2hPUKvgdYm89iD5VJV38IPX9/JuAFJvHrn2cRFe7BY3EmRCF0IL2SBC8GVriwXS9DdPfQk+4r2naUu1pVBfLp/43G2XKzFKDwUFj305m7Kapt55Lqpvok5mKXoQARdCBtE0AVXgrFcwPvEaFsLNFU51in1lVh7imNTrWnMBR1+Aby76yTLth3n7vNHM3mwHx695aFLDroQJojlIrhiCbp7rnh0PzMZWXPSPPc0KQqO4+5Yjbvi+/s3nvZ1RWvbVysqrIfHl31Oc6sNgA/3FDN5cDJ3LRzt37UTsiAyViJ0IWwQQRdcaa619z/3YFvEpULtSSOC1vJ0FomW5eIlQm8XdH8tF8dC0bqlHgU8/MFRVqmBpMXHADAgOY5Hr5tGdKSfPzgjImD6zTB0tn+vE4Reigi64Ip7J0Vn+tkF3dPxhExQER0EfX9RDQmxUQxqF3RjuRwprWNHQaX7VTqiNYtR7MsvZMXeHdwHDMtKZ82tC8hKCsFCF5c/Gvw1BKGXIIIuuOKp06KFleniPiEKJqJPyHSxXPLL6lnyxCco4Lk5BcwCdHx/Xtqcz0MrdtNkt0y64vzYONblHmWbzoRo+N6iKUSEQswFIcwQQRdc8dRp0cLKdPF23Kla1GbT3PfaDiKVYsyARN5Yv4tZ0fDge4W8mHuEc8dk8MClE4iL7tom6fdcCtcOT+Oa8RNgKUTEyiSmIHhCBF1wpTNBtzJd3DNcLJwE/bn1R9h0uJzfXTOFq6YPZuM/l0EBLN1Tz30XT+Sb80cREeFjT5e4RJJVI0S1mud+NOcShNMJEXTBlaYa7+1pLcvFm6AnDYCTn3OopJbfvbeHC8Znce2MISilOGeQorU4mddvn+9faiE4lqGzZ7nIcnGC4BkRdMEV9wWgnbEsl7hk9hXV8IuVuZTXNbcfvqW+hWsbi7nhb58QGxXJr686w7SqBagvIyox038xB1P+75S2KIIuCJ4RQRdc8cFy2V8Ji/+yjoSYKKYPc/RmaVNZRDbaOHew4urzziQr2ckaqSv1P2XRIibBZNdYhUViuQiCR8JT0FubYcs/YPqXvIuT4EJ+WT2vbsnn3sYaNhQ08fE7eR3OmVRaz2LgvYP1zBiRxh+vm+Yq2rkn4BV45NJsGOhWEVpfDilDAhtcbCKUO5X+S4QuCB4JT0Ev2Azv/gCKPoclT/T0aHo9K3ee4IHXP6etuY7vxbax4VgTz+Uf6XDeeaqBxZEwfcwwvnnLHCLdJzU7K/+vL4NBUwMbYEyCKf1vkQhdEDojPAW90d4xcNu/YcJiGHtxz47nFFFc08j+IseCyjkZCQxK9R7NNra08fOVufx3Uz7Th6XyxOJx8Ax8f/FMvj/r0o4vOJYOz/6WeRNzwFOGirfyf62hPhjLJdFMirY2mMZc/qx4JAinEeEp6FY/koQsWPEd+NYG/3uI9DGsKLumqbV9X2xUBA8tnsQN1jqaThworuHu/25jz8ka7pw/iu9dNJboikP2F3qZFE0ebNYEtdrOutNe/u8m6M21Zk3QoAS9Fprru1ytSBBOZ8JT0K2Fjq/8K7x4A7zzA7j67z07pm7CPcr+/kXjiI6MoM2m+euaAzyw9HPWHywzK93HRaO15rXPCvjpG7uJj4nkX1+bzfyx9jRFb73QLVIGwz07vHvh0f0gNqVjC123sn+/iUkAtOmnLo20BMEr4Sno1kLHw+fCeffDmodhxldgxDk9NqTNh8u556VtPPfV2YzLDs1Ercco26lB1Zyc/jz50UEe/WAfb+44QYQCjXFA5o5K50/Xu01qemud60yql+jcImlAR8ulLsDGXBZWe9u6UvHPBaETwlTQa0yjqOh4mPMNI+gFW3pU0F/cnE9hVSPfe3U7y741z//OgE5orXn1swJ+5inKdiIiQnHXwtHMG53BqjzHROXg1H5cO3Nox0lNXwS9KzwtFm1F6P72QrewxlNXKhG6IHRCeAp6c60pRlHK5E4nZELZgR4bTmNLGx/kFjEqM4Fdx6v56+qD3HPhmE5fU1zdyG/f3UtJbVOHYzWNLWzLr/QcZXtg2tBUpg31YS3PZvsvm2AEPSkbCj513RdoL3SL9gi9BPrnBD42QQhzwlPQm2odK90ApI+BsoM9NpyP9pVQ29TKX684k9e3FvD4h/u5YEKW16rJj/aV8N2Xt1PX3Mr4bM8TlPddPI4754/qGGUHQ/viFkFG6DVFxtdprxItNdtgJkXBfDFkTQh8bIIQ5oSpoFe7toBNHwX73u2x4azcWUhafDRnj0pnypAUNhws496Xt3P9rI5+9JGyOv69MZ/x2Um8fNNZjM46hYVRXU2K+kLiAJNe2FQNcfYvrPoyiIj2nj3TFe2fpRbLRRA6ITwFvbnWVZQyxsC2F6Ch0tEx8BTR0NzGqrwilkwbTHRkBKnxMfz2minc+cJn/PKtjtWYADfNGcZPL5/o+2LHoaKpxgiv+2pE/pBkLy6qKXIIulX2H2j+uPOan5K2KAheCU9B72C52NeaLDsIQ2ac0qGs3ltMfXMbl08Z2L5v4bgsdvzsIlraOi7wEBmhiI/poY/F6uMSTOFOYpbZ1hZB5ljzuL48cLsFXD/LKCn7FwRvhKmg1ziEBYyHDmZi9BQL+sqdJ8hIjGFOjuuEYFx05KmPwLuis8ZcvuKp/L++DBKCEHRn+0z6uAiCVwLPnevNNNe6+rVpI0yFY9n+UzqMuqZWPtxTzKWTBxIVRJriKaOz1rm+4qn8P5iyfxBBFwQf6QMqEwBNNW4/02MgbfgpT118a2chjS02LnOyW7qV1b+G1Q8H/vpQROhxqRAZCzWFjn31ZYFXiYL5/CKi7Y/FQxcEb4SfoGvteaHj9NFQeuoEvbimkYffyWPqkBRmjzhFfWR2/Bdy3wj89e5fhIGgFGSfAcc2m+dtrWYyOpgIHRwTo5LlIgheCT9Bb20E3dYx0kwfA+UHwebbSvPBoLXmwaW7qG9u45Hrpvq+dmYwNNVCZT5UHQ/iGiGI0AFGLYTjW4yQN1QAOnhBt8YlWS6C4JXwE/QmL9WO6aPMAgk1J7p9CEu3Hud/eUXcf/G4U5dHXrrXbJtroLEqsGuEStBHLgRtgyNrncr+QxShi+UiCF4JP0G3Oi26Wy4ZTpku3ciJygYeenM3s0ak8dV5p7BMvXiP43GgUXqoBH3ILPPvf3B18FWiFmK5CEKX+CToSqlLlFJ7lVIHlFI/7OS8a5RSWik1M3RD9BNvDaasXPTS7st0WX+wlCuf+IQ2m+b310wNbVl+VxTnOh5XByDobS2mwjPYLBcwk5gjzoFDq536uAQr6PYvaLFcBMErXeahK6UigSeALwAFwKdKqRVa61y385KA7wCbumOgPtNuubhF6EkDITohZD1dbDZNeb1Z8V5reGHjUR7/cD85GQk899XZjMhI6OIKIaZkjxHN+rLABD0UnRadGbnQtFs4vtU8DybLBRyCLoVFguAVXwqLZgMHtNaHAJRSLwFLgFy3834B/A74fkhH6C9Wx0D3BlNKGR89RLnoP12xi39vzHfZd/WZQ/j5kkkkxPZAvVbxHsiZD7nLA7NcQi3ooxaa7a6lZhvsilHWF7TkoQuCV3xRnsHAMafnBcAc5xOUUtOBoVrrlUopr4KulLoDuANg2LBh/o/WFzoTpvTRcGJr8G/R2sYb208wd1Q6l042lZFD+8ezYFxWF6/sJhqroLoAsm+D/I2BRejtX4RBpi1aZIw1S9ZV5RsbJ5j+MODkoYugC4I3fPHQPRnBuv2gUhHAH4HvdXUhrfXTWuuZWuuZmZkdF2QICe2C7kGYMsaY1L7Wjj3G/WHtvlJqGlu547yR3HL2CG45e0TPiTlAiT3DJWuCWSauqsD7ufv/B698GSqOuu4PdYSulLFdIDTruYqgC0KX+CLoBYBzn9chgHPuXxIwGVijlDoCnAWs6LGJ0c4izfTRJp2u/HBQb7Fy5wlS46OZNzpIXzhUFNu7NmaOh+RBnUfoax8xxUdPnQt5bzr2twt6CCZFLSzbJdgJUXBYaOKhC4JXfLFcPgXGKKVygOPADcBN1kGtdRXQrmxKqTXA97XWW0I7VB9p8pK2CE5dF/dD1viALm+tPnTF1EFBLSMXUorzTDpf6nBIHgL73nddYMKi+gTkb4AzvwwnP4eXb4bJVxtrxErnDFWEDsbTh+AnRMEpQpcsF0HwRpeCrrVuVUrdDbwHRAL/0FrvVkr9HNiitV7R3YP0i6ZaI+YRHsQ2bYTZVh7reMxH1uwtoa65jcunDAr4GiGnJA8yx5l7Thls0g8bKjpaHbuXAxrmfseI/6r/g8+eA1ubOZ4yzLw+VCRmwqSrYPCZwV9r8AwYOA0SetDaEoRejk/pGFrrt4G33fb91Mu5C4IfVhA0e+jjYhGXAih7OXpgrNx5gvSEGM4aeYr6s/hC8R4Ydb55nGwX5OrjHgR9GQw4w1FkdfGvzF93cu0/Q3Od4WfDNz4KzbUEIUzpJZ5BCOms2jEi0qxYFKCg1ze3siqvmEsmZ/eedrj15VB70rHWZsoQs3VPXaw8BgWbYdKVp3Z8giCcMnqJKoUQ99WK3OmXFrCgr95TQkNLb7Nb7CX/lqC3R+humS65y8128lWnZlyCIJxywk/Qm2s7z6UOQtCXbz9OZlIss3NCaLeUHoDHZ5h0wkBwznABs1JTRFTHCH3XUuNB9x8Z+FgFQejVhJ+gd7XqTr80aCj3+7JHy+r4X14R184YEtoeLesfMxkmb3zL2Cf+UrLHpPRZVktEpGlz4Jy6WH7YFFRN+mJoxiwIQq8kTAW9swi9f0AR+rPrDhMdEcGtc0cEPjZ3aothx8smva++DN653/9rFOeZFEznFMXkwa4RumW3iKALQlgTfoLeDZZLRV0zr24pYPG0QWQlhzAPevPfoa0ZLnsUzrsfPn8Vcv3MAi3Oc9gtFimDXSP0XUtN2l/a8ODHLAhCryX8BL2ptvPimH5ppveJlXvtA//ZdJSGljZuPzeE/nNzPXz6DIxbBBmj4dzvGo975b1QV+rbNepKTb/xrImu+5MHmyIirU13yZM7TT64IAhhTXgJemsztDV1neUCZnk0H2hqbeO59Uc5b2wm47JDWEW547/Gy597t3keGQ1XPGYEOs/HKN2aEHWvek0ZYv4d6kpht73boaQrCkLYE16C7q11rjNWsY2Ptssb205QWtvE7eeGcPUhWxts+CsMOhOGne3YP2AyqAgTXftCe4bLBNf9zqmLu5bB0DmOSVNBEMKW8BL0zjotWrRH6L4J+n82HWV8dhLnhKoRV1MNLPuGWbB67rddJzMjoyBxAFQX+natkjxT/ZqU7brfKt8/uBqKd4vdIginCWEq6F146OCToJfXNbPzeBWLzhiIcm90FQiFO+Cp+bDrdVj4I89ZJ0nZUOOjoBfvMf65+9isCH3z04CCiUuCGrYgCH2D8BJ0XxZp8EPQPzlQitZwzpggo3OtYdPT8MyF0FIPX1kJ8+/vKMQASYN8E3StzTqi7hkuYLobRsaY6wyfC8kDgxu/IAh9gvAS9Pb1RH2J0Lsu4lm3v5TkuCimDE4JfEwNFaZN7Tv3mQUf7vwERszzfn7yQN8EvbYIGisdJf/ORESYvuggueeCcBrRA4tfdiNN1WbbmaD72HFRa83a/SXMHZUReCOuY5vhtduMQF/0Kzj7Ls9RuTNJ2WZsLQ2dr87TnuHiQdDB9EWvzBe7RRBOI8IrQvfFcomINKLehaAfKq3jRFVjYHaLzQZrH4V/XGIE/GvvmfREX3z4JHtk3VWUbjXlcs9wsZh0Jcy50/R2EQThtCDMInTLculioWMfqkXX7TfFPef6K+i1xSaL5eCHMPFKWPxn+68CH7H87pqTnTfSKs41S7slelmbdfbtvr+nIAhhQZgJurX8XBcFQPH9u2yEtXZ/KcP6xzM8PcH39z+0BpbeYSpRL/8jzPiqb1G5M0l2Qe8qF714j/foXBCE05Iws1xqzCLCkV18T3URobe02dh4qMx3u6WtFVb9Ap6/0kTjt38IM7/mv5iDQ9DdLZe2FpPZAmZbsse7fy4IwmlJeAl6V4tbWHQh6NuPVVLb1Mq5vhYTffx7WPsHmPYluGMNDJjk2+s8EZdiFnyuOenYZ7PBY9PgvQfN8+rjZgI4wIWuBUEIT8LLcmnuojGXRReCvnZ/KREK5o7yUdAPrjLl9Vc+4eNAO0Epk+nibLlUHTNl/Bv/CmMvNr8IQCwXQRBcCLMIvZMFop3ppONiWW0Tb+08wZQhqaTER3d9rZZGOLHdCHqoSBrkGqFbGS2xyfDG3XBsk3kulosgCE6EmaD7GqH3B7QRdSfWHyzl0sfWcqyigTvnj/LtPQt3gK0ltIKePBBqnCL04lyzvfafxm5Z96jp+RIfwqXwBEHo84SZ5VLjmFTsDHu16LL1n5PbZNL+KutbeG1rATkZCTz31dlMHNTJMnbOWNHy0NmBjNgzSdmmQZfWxoIp3mOi9tEXwrx7YN0fPZf8C4JwWhNegt5UA+ljuj7PLuj/WrWdvMixREYoFHDtjCH87IpJJMT68c9ybBOk5YS2gCdpkOln3lBhovCSPMcE6IIHoGCLWRhDEATBiTATdD+yXIBBsfX854Ev+CfgzmgNBZ/CyAWBvd4bVjvcmkKT9VKyF2Z93eyLioVbV4b2/QRBCAvCS9B9zHI53hzHYGDRqLjAxRyg8qhpkhVKuwUcjbWqCyEqDlobxWIRBKFLwmdStK3VtKbtqkoUeGG7aeJ13tAgv8+ObTbbUE6IgmtxkZXhIhktgiB0QfgIerNvfVwq65t5YbvJbknWtcG957FNJk3SfZHmYHG2XKwMl8xxoX0PQRDCjvCxXJp96IUO/GdTPnUtmrZ+KUT6uAydV45thsEzTAfHUBIVaxpvVZ8wE70pw3xLxxQE4bQmfCL09sZc3iP0ptY2nlt/hPPGZhKZ0N+nRS68X6wWinaF3m6xsIqLSvZIib8gCD4RRoLedYT+xvYTlNQ0cfu5OT610O2U45+BtnWjoGebkv/SfTIhKgiCT4SPoDd3vkC01ppn1h5ifHYS54zOCF7QC+wTokNmBH6NzkgeCEW7oa059B69IAhhSfgIutXfPC7V4+GP9pWwr6iW288diVIqeEE/8olpjmWtURpqkgYB9na5YrkIguAD4SPoFYfNNnWYx8PPrD3MgORYrphqz/H2YZELr7Q0Qv6G0BcUOWNluqAgQzJcBEHomvAR9PIjkJgNMfEdDu0+UcW6A6XcOjeHmCj7LXfScbFL8jeYYp9R5wc35s6wiovSRni8J0EQBHfCR9ArjkD/HI+Hnl17mPiYSG6a7RS990vDU8dFnzj4IUREw4h5AQ3VJ6ziIikoEgTBR3wSdKXUJUqpvUqpA0qpH3o4/l2lVK5SaqdSapVSanjoh9oFFYdNkyw3VuUVsWLHCa6fNdS1v7nlfQfiox9abbJbYvxYb9RfrAhdMlwEQfCRLgVdKRUJPAFcCkwEblRKuaddbANmaq2nAK8Bvwv1QDulpdEU4aSNaN/V3Grj52/mctu/tjAuO4lvLRjt+pp+9l7i/gp6bQmc/BxGLQhqyF2SkAGXPWLWJhUEQfABXypFZwMHtNaHAJRSLwFLgFzrBK31aqfzNwI3h3KQXVKZD+h2y6Wirpmv/HMzOwuquHXuCB5YNJ7YKLdqzkAj9ENrzLY7/XMLq8OiIAiCD/gi6IOBY07PC4DOqmluA97xdEApdQdwB8CwYZ6zUQLCynCxR+g/fmMXeYXV/O3mGVwyOdvzawIW9NUmNXLgtMDGKgiC0E344qErD/u0xxOVuhmYCfze03Gt9dNa65la65mZmZm+j7Iryi1Bz2HlzhO8tbOQey4Y413MITBB1xoOroaR80Pfv0UQBCFIfBH0AmCo0/MhwAn3k5RSFwI/AhZrrZtCMzwfqTgCMYmU2JL4yfJdTB2S0vWaoP1STavdvW8bofaF0n1mrc+RC4MesiAIQqjxRdA/BcYopXKUUjHADcAK5xOUUtOBpzBiXhz6YXqnrLaJppIDtCQP48Hlu6hrbuOR66YSFdnFrUVEwoU/M574Z//07c0Ofmi2o0TQBUHofXQp6FrrVuBu4D0gD3hFa71bKfVzpdRi+2m/BxKBV5VS25VSK7xcLqQs3VrAjF/+j6MHcllVlMAHuUXcd9E4Rmf52Gp25m2m2vO9H5sovyuOrDOpkU7ZNIIgCL0Fn/qha63fBt522/dTp8cXhnhcXWKzaf665iBjM+MZWVdK6/AL+duMM7loYie+uTsREbD4L/DkXFh+F3zlTbPPGxVHZKEJQRB6LX22UnTNvmIOFNfy3bNTiLI1MXHiFC6ZPJCICE9zuJ2QOhQufhiOroNtz3d+blUBJA8OfNCCIAjdSJ8V9L9/fJiBKXFcOLDe7PBQJeoz0282Tb0OfeT9nOY6aKyEFBF0QRB6J31P0PM3UvbKd9hwqJSvzhtBVOVRs99LHxefUPaOhmX7vZ9Tddxsk4cE/j6CIAjdSN8T9JI9pOf+i4Wxe7lh9jBTVKQiIWVo16/tjIwxUHbQewpjtV3QJUIXBKGX0ucE/fjwJZTpZB5M/R/JcdFmojJlCERGd/naTkkfBS31pieMJyxBFw9dEIReSp8T9Bc/K+b5tosYU7UeSvaaKtFQpBGmjzHbsgOej7dbLoOCfy9BEIRuoM8J+t3nj2bejfdDVBxs+IuxXILxzy3S7d0Yvfno1QWQkAVRscG/lyAIQjfgUx56byIuOpLZk8bB4Ztg27/NIsrBZLhYJA+C6Hjjo3ui6rj454Ig9Gr6XITezll3QVuLeRwKy0Up46OXeovQj4t/LghCr6bvCnrGaBi3yDwOheUCxkfvzEMXQRcEoRfT5ywXFy74CcQmQWaI1t1MHw25y6G1ydUrb6yC5hqxXARB6NX03QgdzALKVz0FUTGhuV7GGNC2jo26rFRGidAFQejF9G1BDzXp9h7q7j66lbKYIlWigiD0XkTQnWlPXXTz0asLzFYidEEQejEi6M7EpZhcc/dc9KrjoCIgaWDPjEsQBMEHRNDdsXq6OFN9HBKzIbJvzyELghDeiKC74ykXvapAMlwEQej1iKC7kz4G6kuhocKxr/q49HARBKHXI4LuTvvEqN120dpeVCQZLoIg9G5E0N3JcOu62FABrQ1iuQiC0OsRQXcndbhZMMPy0aUPuiAIfQQRdHeiYkwFau5yaK6XoiJBEPoMIuieuOiXxnL58BdSVCQIQp9BEqs9MWohzPo6bHwShs+DiChIzOrpUQmCIHSKROjeuPD/IG04HF0HSYMgIrKnRyQIgtApIujeiE2EK58ElGS4CILQJxDLpTOGz4UrHoP49J4eiSAIQpeIoHfFjK/09AgEQRB8QiwXQRCEMEEEXRAEIUwQKOKawgAABE1JREFUQRcEQQgTRNAFQRDCBBF0QRCEMEEEXRAEIUwQQRcEQQgTRNAFQRDCBKW17pk3VqoEOBrgyzOA0hAOp69wOt736XjPcHre9+l4z+D/fQ/XWmd6OtBjgh4MSqktWuuZPT2OU83peN+n4z3D6Xnfp+M9Q2jvWywXQRCEMEEEXRAEIUzoq4L+dE8PoIc4He/7dLxnOD3v+3S8ZwjhffdJD10QBEHoSF+N0AVBEAQ3RNAFQRDChD4n6EqpS5RSe5VSB5RSP+zp8XQHSqmhSqnVSqk8pdRupdQ99v39lVIfKKX227dpPT3WUKOUilRKbVNKrbQ/z1FKbbLf88tKqZieHmOoUUqlKqVeU0rtsX/mZ58mn/W99v++dymlXlRKxYXb562U+odSqlgptctpn8fPVhn+bNe2nUqpM/19vz4l6EqpSOAJ4FJgInCjUmpiz46qW2gFvqe1ngCcBdxlv88fAqu01mOAVfbn4cY9QJ7T898Cf7TfcwVwW4+Mqnt5DHhXaz0emIq5/7D+rJVSg4HvADO11pOBSOAGwu/zfg64xG2ft8/2UmCM/e8O4El/36xPCTowGzigtT6ktW4GXgKW9PCYQo7WulBrvdX+uAbzP/hgzL3+y37av4Are2aE3YNSaghwGfCM/bkCzgdes58SjvecDJwHPAugtW7WWlcS5p+1nSign1IqCogHCgmzz1tr/TFQ7rbb22e7BHheGzYCqUqpgf68X18T9MHAMafnBfZ9YYtSagQwHdgEDNBaF4IRfSCr50bWLfwJuB+w2Z+nA5Va61b783D8vEcCJcA/7VbTM0qpBML8s9ZaHwf+AORjhLwK+Izw/7zB+2cbtL71NUFXHvaFbd6lUioReB34f1rr6p4eT3eilLocKNZaf+a828Op4fZ5RwFnAk9qracDdYSZveIJu2+8BMgBBgEJGMvBnXD7vDsj6P/e+5qgFwBDnZ4PAU700Fi6FaVUNEbM/6O1XmrfXWT9BLNvi3tqfN3APGCxUuoIxko7HxOxp9p/kkN4ft4FQIHWepP9+WsYgQ/nzxrgQuCw1rpEa90CLAXmEv6fN3j/bIPWt74m6J8CY+wz4TGYSZQVPTymkGP3jp8F8rTWjzodWgF8xf74K8Abp3ps3YXW+gGt9RCt9QjM5/qh1vpLwGrgGvtpYXXPAFrrk8AxpdQ4+64LgFzC+LO2kw+cpZSKt//3bt13WH/edrx9tiuAL9uzXc4Cqixrxme01n3qD1gE7AMOAj/q6fF00z2eg/mptRPYbv9bhPGUVwH77dv+PT3Wbrr/BcBK++ORwGbgAPAqENvT4+uG+50GbLF/3suBtNPhswb+D9gD7AJeAGLD7fMGXsTMEbRgIvDbvH22GMvlCbu2fY7JAPLr/aT0XxAEIUzoa5aLIAiC4AURdEEQhDBBBF0QBCFMEEEXBEEIE0TQBUEQwgQRdEEQhDBBBF0QBCFM+P8C4bcDCCVw0QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(test_scores1)\n",
    "plt.plot(test_scores2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  虽然最后的结果要稍微好一点，但中间的过程有点奇葩"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
